package com.deer.wms.base.system.service;

import com.deer.wms.base.system.model.ErpBackRecord;
import com.deer.wms.base.system.model.Item.ItemInfo;
import com.deer.wms.base.system.model.erp.*;
import com.deer.wms.project.root.service.SuperService;

import java.util.List;
import java.util.Map;

public interface ErpService extends SuperService<ErpBackRecord> {



    //从erp抓取物料信息数据
    void saveItemInfo();

    //从erp抓取出仓库信息数据
    String saveWarehouseInfo();

    //从erp抓取出部门信息数据
    String saveDeptInfo();

    /**
     * 从erp抓取出客户信息数据
     * @return
     */
    String saveCustomerInfo();

    /**
     * 从erp抓取出供应商信息数据
     * @return
     */
    String saveSupplierInfo();



    //从erp抓取物料辅助属性
    String saveAuxProps();

    void saveErpBack(ErpBackRecord erpBackRecord);

    /**
     * 采购收货回传数据
     * @param list 条件
     * @return
     */
    Map<String, Object> queryErp(List<Map<String,Object>> list);

    /**
     * ASN通知单查询接口
     * @param hashMap 条件
     * @return
     */
    List<ErpTask> queryAsnNoticeOf(Map<String, String> hashMap);

    /**
     * 采购退货回传接口
     * @param purchaseReturn 条件
     * @return
     */
    Map<String, Object> purchaseReturn(Map<String, Object> purchaseReturn);

    /**
     * 采购退货通知单接口
     * @param purchase 条件
     * @return
     */
    List<ErpOutTask> purchaseReturnNotice(Map<String, Object> purchase);

    /**
     * 销售出货回传接口
     * @param hashMap 条件
     * @return
     */
    Map<String, Object> salesShipment(Map<String, Object> hashMap);

    /**
     * 销售出货查询接口
     * @param hashMap 条件
     * @return
     */
    List<ErpOutTask> salesShipmentQuery(Map<String, Object> hashMap);

    /**
     * 销售退货回传接口
     * @param hashMap 条件
     * @return
     */
    Map<String, Object> salesReturn(Map<String, Object> hashMap);

    /**
     * 销售退货申请单接口
     * @param hashMap 条件
     * @return
     */
    List<ErpTask> salesReturnApplication(Map<String, Object> hashMap);

    /**
     * 生产领料回传接口
     * @param hashMap 条件
     * @return
     */
    Map<String, Object> productionOfPicking(Map<String, Object> hashMap);

    /**
     * 生产领料申请单接口
     * @param hashMap 条件
     * @return
     */
    List<ErpOutTask> productionOfPickingApplication(Map<String, Object> hashMap);

    /**
     * 生产退料回传接口
     * @param hashMap 条件
     * @return
     */
    Map<String, Object> productionMaterialReturn(Map<String, Object> hashMap);

    /**
     * 生产退料申请单接口
     * @param hashMap 条件
     * @return
     */
    List<ErpTask> productionMaterialReturnApplication(Map<String, Object> hashMap);

    /**
     * 完工报告回传接口
     * @param hashMap 条件
     * @return
     */
    Map<String, Object> completionOfTheReport(Map<String, Object> hashMap);

    /**
     * 完工报告生产订单接口
     * @param hashMap 条件
     * @return
     */
    List<ErpTask> completionOfTheReportApplication(Map<String, Object> hashMap);

    /**
     * 调拨出库*委外发科回传接口
     * @param hashMap 条件
     * @return
     */
    Map<String, Object> inAllocatingOutbound(Map<String, Object> hashMap);

    /**
     * 调拨出库*委外发科申请单接口
     * @param hashMap 条件
     * @return
     */
    List<ErpOutTask> inAllocatingOutboundApplication(Map<String, Object> hashMap);

    /**
     * 杂收单回传接口
     * @param hashMap 条件
     * @return
     */
    Map<String, Object> miscellaneousChargeSheet(Map<String, Object> hashMap);

    /**
     * 杂发单回传接口
     * @param hashMap 条件
     * @return
     */
    Map<String, Object> miscellaneous(Map<String, Object> hashMap);

    /**
     * 日常盘点回传单
     * @param hashMap
     * @return
     */
    Map<String,Object> dailyInventoryListReturn(Map<String,Object> hashMap);

    /**
     * 日常盘点查询单
     * @param hashMap 条件
     * @return
     */
    List<ReturnGoods> dailyInventoryList(Map<String,Object> hashMap);

    /**
     * 物料(料品)查询 回传
     * @param hashMap 条件
     * @return
     */
    List<ItemInfo> itemInfoList(Map<String,Object> hashMap);

    /**
     * 往来单位查询 回传
     * @param hashMap 条件
     * @return
     */
    Map<String,Object> withTheUnit(Map<String,Object> hashMap);


    /**
     * 委外退料查询接口
     * @param hashMap 条件
     * @return
     */
    List<ErpTask> getOutSourceBillNo(Map<String,Object> hashMap);

    /**
     * 委外收货查询接口
     * @param hashMap 条件
     * @return
     */
    List<ErpTask> queryOtherIn(Map<String, Object> hashMap);
}
